package com.starview.star.compiler.ast;

import java.util.List;
import java.util.Map;

import com.starview.platform.data.IConstructor;
import com.starview.platform.data.type.Location;

public interface IAbstract extends IConstructor
{
  void accept(IAbstractVisitor visitor);

  Location getLoc();

  void setLoc(Location loc);

  IAttribute getAttribute(String att);

  boolean hasAttribute(String att);

  IAttribute setAttribute(String att, IAttribute attribute);

  Map<String, IAttribute> getAttributes();

  List<String> getCategories();

  void setCategory(String category);

  boolean isCategory(String category);

  astType astType();

  public enum astType {
    Bool, Char, Int, Long, Flt, Dec, Str, Name, Apply
  };
}
